package com.vhall.component.entity.tag.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.framework.common.annotation.ParamName;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;

/**
 * @author shimingming
 * @since 2023/4/12 16:00
 */
@Data
public class AdvertisingReqVO implements Serializable {

    private Integer id;

    /**
     * 所属栏目ID 这里传入固定值0 表示发现。这个栏目与栏目管理没有关系
     */
    @NotNull(message = "所属栏目ID 不能为空！")
    @ParamName(value = "column_id")
    @JsonProperty(value = "column_id")
    private Integer columnId;

    /**
     * 投放位置：placement_location
     */
    @NotNull(message = "投放位置 不能为空！")
    @ParamName(value = "placement_location")
    @JsonProperty(value = "placement_location")
    private Integer placementLocation;

    /**
     * 投放类型：ad_type
     */
    @NotNull(message = "投放类型 不能为空！")
    @ParamName(value = "ad_type")
    @JsonProperty(value = "ad_type")
    private Integer adType;

    /**
     * 关联内容
     */
    @ParamName("il_id")
    @JsonProperty("il_id")
    private Integer ilId;

    /**
     * 广告标题
     */
    @ParamName("title")
    @JsonProperty("title")
    @Length(max = 100, message = "广告标题 参数过长")
    private String title;

    /**
     * 原生链接
     */
    @ParamName("url")
    @JsonProperty("url")
    @Length(max = 256, message = "原生链接 参数过长！")
    @Pattern(regexp = "(\\\\s)?|(http(s)?://([\\w-]+\\.)+[\\w-]+[:]?([\\d]+)*(/[\\w- :./?%&=]*)?)", message = "链接输入有误")
    private String url;

    /**
     * 排序
     */
    @NotNull(message = "排序 不能为空！")
    @ParamName("sort")
    @JsonProperty("sort")
    private Integer sort;


    @NotBlank(message = "start_time 不能为空！")
    @ParamName("start_time")
    @JsonProperty("start_time")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]+|[0-9]+[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$", message = "时间格式为2017-01-01 08:00:00")
    private String startTime;

    @NotBlank(message = "end_time 不能为空！")
    @ParamName("end_time")
    @JsonProperty("end_time")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]+|[0-9]+[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$", message = "时间格式为2017-01-01 08:00:00")
    private String endTime;

    /**
     * 图片
     */
    @NotBlank(message = "图片 不能为空！")
    @ParamName("image")
    @Length(max = 255)
    private String image;

    /**
     * 上架状态：0-未上架，1-已上架 2 已下架
     */
    @ParamName(value = "is_shelves")
    @JsonProperty(value = "is_shelves")
    private Integer isShelves;

}
